package com.hopeland.androidpc.jilintongdaomen.room;


import android.content.Context;

import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;

import com.hopeland.androidpc.jilintongdaomen.room.dao.RfidRoomDao;
import com.hopeland.androidpc.jilintongdaomen.room.entry.RfidRoomInfo;


/**
 * 获得UserInfoDao的实例，实现增、删、改、查的功能
 * 同时获得UserInfoDatabase的实例，在Activity中可进行数据库表的打开，关闭等
 * 和SQLiteOpenHelper一样
 */
@Database(entities = {RfidRoomInfo.class}, version = 1, exportSchema = false)
public abstract class RfidDataBase extends RoomDatabase {

    // 规定格式的写法，(写成别的，根据room的版本的不同，可能有运行异常)
    // Java编码规范中的约定
    public abstract RfidRoomDao RfidRoomDao();
    public static RfidDataBase userInfoDatabase;

    // 获得UserInfoDatabase的实例
    /// 写法和SQLiteOpenHelper一致，用单例模式
    // room默认不能在主线程中操作数据库，因为数据库是一个耗时操作
    // 实际项目中，默认使用异步 --自学
    public static RfidDataBase getInstance(Context context) {
        if (userInfoDatabase == null) {
            // 数据库的名字
            userInfoDatabase = Room.databaseBuilder(context.getApplicationContext(),
                            RfidDataBase.class, "user-info")
                    // 强制开启在主线程中操作数据库
                    .allowMainThreadQueries()
                    .build();
        }
        return userInfoDatabase;
    }
}
